package controller; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JOptionPane; import model.IntPolynomial; import model.NotAPolynomialException; import model.PolyOps; import model.RealPolynomial; import view.MenuWithOperationsGUI; /** * @author iulia * * This is the controller part of my MVC design Controller acts on both * model and view. It keeps them separate. Contains listeners for * objects from the GUI */ public class PolyController { private MenuWithOperationsGUI view; private PolyOps model; public PolyController(PolyOps model, MenuWithOperationsGUI view) { this.model = model; this.view = view; this.view.addAdditionListener(new AdditionListener()); this.view.addSubtractionListener(new SubtractionListener()); this.view.addMultiplicationListener(new MultiplicationListener()); this.view.addDivisionListener(new DivisionListener()); this.view.addDifferentiationListener(new DifferentiationListener()); this.view.addIntegrationListener(new IntegrationListener()); } class AdditionListener implements ActionListener { public void actionPerformed(ActionEvent e) { //JOptionPane.showMessageDialog(null, "You clicked add!"); String s1 = null, s2 = null; s1 = view.getFirstPolynomial(); s2 = view.getSecondPolynomial(); System.out.println(s1); System.out.println(s2); try { IntPolynomial poly1 = new IntPolynomial(s1); IntPolynomial poly2 = new IntPolynomial(s2); IntPolynomial addition = new IntPolynomial(); addition = PolyOps.add(poly1, poly2); view.setResult(addition.printPoly()); // System.out.println(addition.printPoly()); } catch (NotAPolynomialException e1) { view.setResult("Invalid input!"); System.out.println("Problems at addition!"); } } } class SubtractionListener implements ActionListener { public void actionPerformed(ActionEvent e) { //JOptionPane.showMessageDialog(null, "You clicked subtract!"); String s1 = null, s2 = null; s1 = view.getFirstPolynomial(); s2 = view.getSecondPolynomial(); System.out.println(s1); System.out.println(s2); try { IntPolynomial poly1 = new IntPolynomial(s1); IntPolynomial poly2 = new IntPolynomial(s2); IntPolynomial subtraction = new IntPolynomial(); subtraction = PolyOps.subtract(poly1, poly2); view.setResult(subtraction.printPoly()); // System.out.println(subtraction.printPoly()); } catch (NotAPolynomialException e1) { view.setResult("Invalid input!"); System.out.println("Problems at subtraction!"); } } } class MultiplicationListener implements ActionListener { public void actionPerformed(ActionEvent e) { //JOptionPane.showMessageDialog(null, "You clicked multiply!"); String s1 = null, s2 = null; s1 = view.getFirstPolynomial(); s2 = view.getSecondPolynomial(); System.out.println(s1); System.out.println(s2); try { IntPolynomial poly1 = new IntPolynomial(s1); IntPolynomial poly2 = new IntPolynomial(s2); IntPolynomial multiplication = new IntPolynomial(); multiplication = PolyOps.multiply(poly1, poly2); view.setResult(multiplication.printPoly()); // System.out.println(multiplication.printPoly()); } catch (NotAPolynomialException e1) { view.setResult("Invalid input!"); System.out.println("Problems at multiplication!"); } } } class DivisionListener implements ActionListener { public void actionPerformed(ActionEvent e) { //JOptionPane.showMessageDialog(null, "You clicked division!"); String s1 = null, s2 = null; s1 = view.getFirstPolynomial(); s2 = view.getSecondPolynomial(); System.out.println(s1); System.out.println(s2); try { RealPolynomial poly1 = new RealPolynomial(s1); RealPolynomial poly2 = new RealPolynomial(s2); RealPolynomial[] division = new RealPolynomial[2]; division = PolyOps.divide(poly1, poly2); view.setResult("Q:" + division[0].printPoly() + " " + "R: " + division[1].printPoly()); // System.out.println(division.printPoly()); } catch (NotAPolynomialException e1) { view.setResult("Invalid input!"); System.out.println("Problems at division!"); } } } class DifferentiationListener implements ActionListener { public void actionPerformed(ActionEvent e) { //JOptionPane.showMessageDialog(null, "You clicked differentiation!"); String s1 = null; s1 = view.getFirstPolynomial(); System.out.println(s1); try { IntPolynomial poly1 = new IntPolynomial(s1); IntPolynomial differentiation = new IntPolynomial(); differentiation = PolyOps.differentiate(poly1); view.setResult(differentiation.printPoly()); System.out.println(differentiation.printPoly()); } catch (NotAPolynomialException e1) { view.setResult("Invalid input!"); System.out.println("Problems at differentiation!" + e1.getMessage()); } } } class IntegrationListener implements ActionListener { public void actionPerformed(ActionEvent e) { //JOptionPane.showMessageDialog(null, "You clicked integration!"); String s1 = null; s1 = view.getFirstPolynomial(); System.out.println(s1); try { RealPolynomial poly1 = new RealPolynomial(s1); RealPolynomial integration = new RealPolynomial(); integration = PolyOps.integrate(poly1); view.setResult(integration.printPoly()); // System.out.println(integration.printPoly()); } catch (NotAPolynomialException e1) { view.setResult("Invalid input!"); System.out.println("Problems at integration!" + e1.getMessage()); } } } }